numpy 返回上三角矩阵但不包括对角元素 您所在的位置:网站首页 numpy 拉成一维 numpy 返回上三角矩阵但不包括对角元素

numpy 返回上三角矩阵但不包括对角元素

2023-07-19 05:38| 来源: 网络整理| 查看: 265

今天想把课题的(700,700)的标签矩阵取上三角元素但不包含对角元素,如下图所示,左边方框里的内容为下标,右边的是想将左边的元素存入右边一列。

然后我就尝试将二维数组的下标与一维数组的下标一一映射,奈何我表示不出来呀。

想了好久,最后还是放弃了用i,j表示一维数组的索引,另辟蹊径,重新定一个变量保存一维数组的索引。于是就成功的解决了将上三角元素不包含对角元素存入一维数组里。

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/11/22 14:30 # @Author : Qiufen.Chen # @Email : [email protected] # @File : triu.py # @Software: PyCharm """numpy 保存上三角矩阵不包括对角元素""" import numpy as np import os path = '/home/cqfnenu/LSTM/data/700/lable_data/' save_path = '/home/cqfnenu/LSTM/data/700/new_lable_data' path_list=os.listdir(path) path_list.sort() # 排序 for file_name in path_list: lable = np.load(os.path.join(path, file_name)) new_array = np.zeros((244650,1)) # 共244650行 每行1列 初值为0 v = 0 for a in range(lable.shape[0]): for b in range(lable.shape[1]): if b>a: new_array[v] = lable[a][b] v += 1 print(new_array[:100]) # 查看前100个元素 result = new_array.reshape((350,699)) np.save(save_path + '/' + str((file_name).split('.')[0]), result)

--------------------------------------------------------------------------------------------------------------------------------------------

注:由于我的lable矩阵的shape是(700,700),取对角线上以上的元素总共有:700*(700-1)/2 = 244650

思路:①先定义一个(244650,1)大小的零矩阵

           ②再将所需要的元素存入该零矩阵中;

           ③最后reshape成(350,699),保存文件。

--------------------------------------------------------------------------------------------------------------------------------------------

如果是numpy直接获取上三角元素的话,可以用下面的代码实现:

lable = np.load(os.path.join(path, file_name)) triu_array = np.triu(lable) # 取上三角函数 tril_array = np.tril(lable) # 取下三角函数

参考:(1)numpy.triu — NumPy v1.19 Manual

           (2)numpy.tril — NumPy v1.19 Manual



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有